\definecolor{myBlue}{rgb}{0.23,0.43,1}
\definecolor{myYellow}{rgb}{0.95,1,0.23}

\chapter{Testy oprogramowania \label{sec:testy}}

\section{Opis eksperymentów}

Podstawowym celem poniższych testów było sprawdzenie skuteczności działania zaproponowanego algorytmu sterowania grą robota w dynamicznym środowisku ligi \w{Small Size}. Pierwotna idea polegała na skonfrontowaniu dwóch drużyn, z których jedna byłaby sterowana w sposób centralny, natomiast druga z nich posługiwałaby się rozwiązaniem rozproszonym zaproponowanym w niniejszej pracy. Niestety brak dostępności drużyny referencyjnej wymusił korektę założeń. Przedstawione poniżej eksperymenty miały na celu dowieść poprawności działania zaproponowanego sposobu kontroli zawodnika, a także wykazać te z modyfikacji algorytmu generowania strategii, które w sposób istotny wpływają  na końcowy wynik rozgrywek.

Za realizację eksperymentów odpowiadał wspomniany w poprzednim rozdziale moduł \texttt{mgr\_tests}. Każdy z testów polegał na rozegraniu 50 spotkań pomiędzy drużyną 5 żółtych oraz 5 niebieskich robotów. Jeden mecz trwał 10 minut (gra bez zmiany stron boiska). Po upływie czasu następowało zresetowanie środowiska testowego i rozpoczęcie kolejnej rozgrywki. Sumaryczny czas symulacji jednego zestawu meczów wynosił ponad 8 godzin. Algorytmy sterujące robotami wyposażone zostały w odmienne zestawy modyfikacji aby stwierdzić, jaki jest ich wpływ na wynik spotkania. 

Przykładowe filmy, prezentujące przebieg eksperymentów, zostały umieszczone płycie CD załączonej do niniejszej pracy. Szczegółowy opis jej zawartości umieszczono w dodatku~\ref{sec:dodatek_a}.

\section{Wyniki}

\subsection*{Eksperyment nr 1}

Celem eksperymentu~nr~1 było przede wszystkim sprawdzenie poprawności działania algorytmu sterowania robotem. W tym celu skonfrontowano ze sobą drużyny posługujące się takimi samymi zestawami modyfikacji. W pierwszym przypadku wymienione w poniższej tabeli modyfikacje algorytmu sterowania zostały wyłączone dla obu drużyn.

\subsubsection*{Wariant A}
\vspace{0.2cm}
\begin{center}
\begin{tabular}{lcc}
\toprule
 \bfseries Modyfikacja &\bfseries drużyna żółta &\bfseries drużyna niebieska	\\
\midrule
 podział na role 		& \no 		& \no  			\\
 równomierne rozmieszczenie 	& \no		& \no 			\\
 krycie przeciwnika 		& \no		& \no			\\
\bottomrule
\end{tabular}
\end{center}
\vspace{0.2cm}

\noindent
Rezultaty rozegrania 50 spotkań:
\vspace{0.2cm}
\begin{center}
\begin{tabular}{ccc}
\toprule
 \bfseries wygrane żółtych& \bfseries remisy & \bfseries wygrane niebieskich \\
\midrule
 18 & 10 & 22 \\
\bottomrule
\end{tabular}
\end{center}
\vspace{0.5cm}

\noindent
Poniżej przedstawiono wartości średnie parametrów gry, wyznaczone dla jednego spotkania:

\begin{tikzpicture}
\hspace{1cm}
\draw (-0.50,0.50) node[anchor=east]{przechwycenia piłki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,0.00)--(0.00,0.50)--(3.81,0.50)--(3.81,0.00)--(0.00,0.00);
\draw (3.81,0.25) node[anchor=west]{6.6};
\draw[line width=1pt, color = black, fill = myYellow](0.00,0.50)--(0.00,1.00)--(4.19,1.00)--(4.19,0.50)--(0.00,0.50);
\draw (4.19,0.75) node[anchor=west]{7.26};
\draw (-0.50,2.00) node[anchor=east]{celne podania};
\draw[line width=1pt, color = black, fill = myBlue](0.00,1.50)--(0.00,2.00)--(4.15,2.00)--(4.15,1.50)--(0.00,1.50);
\draw (4.15,1.75) node[anchor=west]{18.08};
\draw[line width=1pt, color = black, fill = myYellow](0.00,2.00)--(0.00,2.50)--(3.85,2.50)--(3.85,2.00)--(0.00,2.00);
\draw (3.85,2.25) node[anchor=west]{16.8};
\draw (-0.50,3.50) node[anchor=east]{strzały};
\draw[line width=1pt, color = black, fill = myBlue](0.00,3.00)--(0.00,3.50)--(3.75,3.50)--(3.75,3.00)--(0.00,3.00);
\draw (3.75,3.25) node[anchor=west]{10.4};
\draw[line width=1pt, color = black, fill = myYellow](0.00,3.50)--(0.00,4.00)--(4.25,4.00)--(4.25,3.50)--(0.00,3.50);
\draw (4.25,3.75) node[anchor=west]{11.8};
\draw (-0.50,5.00) node[anchor=east]{zdobyte bramki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,4.50)--(0.00,5.00)--(4.04,5.00)--(4.04,4.50)--(0.00,4.50);
\draw (4.04,4.75) node[anchor=west]{2.26};
\draw[line width=1pt, color = black, fill = myYellow](0.00,5.00)--(0.00,5.50)--(3.96,5.50)--(3.96,5.00)--(0.00,5.00);
\draw (3.96,5.25) node[anchor=west]{2.22};
\end{tikzpicture}
\vspace{1cm}

Druga część eksperymentu miała za zadanie porównanie gry drużyn złożonych z robotów posługujących się pełnym zestawem modyfikacji. W przypadku podziału na role obie drużyny grały dwoma napastnikami oraz dwoma obrońcami:

\subsubsection*{Wariant B}
\vspace{0.2cm}
\begin{center}
\begin{tabular}{lcc}
\toprule
 \bfseries Modyfikacja		&\bfseries drużyna żółta &\bfseries drużyna niebieska	\\
\midrule
 podział na role 		& \yes 		& \yes  			\\
 równomierne rozmieszczenie 	& \yes		& \yes 			\\
 krycie przeciwnika 		& \yes		& \yes			\\
\bottomrule
\end{tabular}
\end{center}
\vspace{0.2cm}

\noindent
Rezultaty rozegrania 50 spotkań:
\vspace{0.2cm}
\begin{center}
\begin{tabular}{ccc}
\toprule
 \bfseries wygrane żółtych& \bfseries remisy & \bfseries wygrane niebieskich \\
\midrule
 22 & 11 & 17\\
\bottomrule
\end{tabular}
\end{center}
\vspace{0.2cm}

\vspace{0.5cm}
\begin{tikzpicture}
\hspace{1cm}
\draw (-0.50,0.50) node[anchor=east]{przechwycenia piłki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,0.00)--(0.00,0.50)--(3.83,0.50)--(3.83,0.00)--(0.00,0.00);
\draw (3.83,0.25) node[anchor=west]{5.98};
\draw[line width=1pt, color = black, fill = myYellow](0.00,0.50)--(0.00,1.00)--(4.17,1.00)--(4.17,0.50)--(0.00,0.50);
\draw (4.17,0.75) node[anchor=west]{6.5};
\draw (-0.50,2.00) node[anchor=east]{celne podania};
\draw[line width=1pt, color = black, fill = myBlue](0.00,1.50)--(0.00,2.00)--(4.17,2.00)--(4.17,1.50)--(0.00,1.50);
\draw (4.17,1.75) node[anchor=west]{17.9};
\draw[line width=1pt, color = black, fill = myYellow](0.00,2.00)--(0.00,2.50)--(3.83,2.50)--(3.83,2.00)--(0.00,2.00);
\draw (3.83,2.25) node[anchor=west]{16.4};
\draw (-0.50,3.50) node[anchor=east]{strzały};
\draw[line width=1pt, color = black, fill = myBlue](0.00,3.00)--(0.00,3.50)--(4.00,3.50)--(4.00,3.00)--(0.00,3.00);
\draw (4.00,3.25) node[anchor=west]{7.14};
\draw[line width=1pt, color = black, fill = myYellow](0.00,3.50)--(0.00,4.00)--(4.00,4.00)--(4.00,3.50)--(0.00,3.50);
\draw (4.00,3.75) node[anchor=west]{7.14};
\draw (-0.50,5.00) node[anchor=east]{zdobyte bramki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,4.50)--(0.00,5.00)--(3.93,5.00)--(3.93,4.50)--(0.00,4.50);
\draw (3.93,4.75) node[anchor=west]{1.18};
\draw[line width=1pt, color = black, fill = myYellow](0.00,5.00)--(0.00,5.50)--(4.07,5.50)--(4.07,5.00)--(0.00,5.00);
\draw (4.07,5.25) node[anchor=west]{1.22};
\end{tikzpicture}

\subsection*{Komentarz}

Przedstawione wyniki pokazują skuteczność gry algorytmu, zarówno w wersji uproszczonej, jak i z pełnym zestawem modyfikacji. Roboty są w stanie podawać piłkę, a zatem można dopatrzeć się elementów gry zespołowej. Duża ilość tych podań oraz zdobytych goli  dowodzi skuteczności zadań za nie odpowiedzialnych. W obu przypadkach można zauważyć podobieństwo statystyk meczowych obu drużyn. Jest to wynik, jakiego należało się spodziewać w przypadku posługiwania się tymi samymi algorytmami. Dowodzi tego także duża ilość remisów sugerująca, że żadna z drużyn nie miała zdecydowanej przewagi podczas meczu. Uwagę zwraca również mniejsza wartość średniej ilości strzałów i zdobytych bramek w przypadku wariantu B. Jest to związane z zastosowaniem bardziej rozbudowanych zachowań, które skuteczniej utrudniają drużynie przeciwnej oddawanie strzałów. Komentarza wymaga także fakt, że skoro zawodnicy obu drużyn korzystają z tego samego zestawu modyfikacji, końcowy wynik konfrontacji nie składa się wyłącznie ze zremisowanych spotkań. Aby to wyjaśnić, dla każdego z 50 meczów rozegranych w eksperymencie wyznaczona została różnica pomiędzy ilością bramek zdobytych przez obie drużyny. Wyniki przedstawiono w formie histogramów \ref{fig:hist_1_A} oraz \ref{fig:hist_1_B}. Dla wariantu A można zauważyć, że oprócz dużej liczby 10 remisów (zerowa różnica bramek), 12 spotkań zakończyło się jednobramkową przewagą drużyny niebieskiej, a 10 taką samą przewagą drużyny żółtej. Podobna sytuacja miała miejsce w przypadku wariantu B (14~jednobramkowych zwycięstw żółtych, 8 drużyny niebieskiej). Wartości te pozwalają wyciągnąć wniosek, że rezultaty obu drużyn są zbliżone, a wiele spotkań zakończyło się zwycięstwem z niewielką przewagą zdobytych goli. 

%\newpage
	\begin{figure}[!h]
	\vspace{1cm}
	\centering
	\includegraphics[width=0.75\textwidth]{./hist/eksp_1_wariant_A}
	\caption{Histogram różnicy bramek (eksperyment nr 1, wariant A) \label{fig:hist_1_A}}
	\end{figure}
	\begin{figure}[!h]
	\centering
	\includegraphics[width=0.75\textwidth]{./hist/eksp_1_wariant_B}
	\caption{Histogram różnicy bramek (eksperyment nr 1, wariant B) \label{fig:hist_1_B}}
	\end{figure}


\newpage
\subsection*{Eksperyment nr 2}

Kolejny eksperyment polegał na konfrontacji dwóch drużyn o skrajnie różnych ustawieniach. Drużyna żółta składała się z robotów sterowanych przez algorytm w wersji podstawowej, natomiast drużyna niebieska korzystała z pełnego zestawu modyfikacji. Rezultaty eksperymentu przedstawiono poniżej.

\begin{center}
\begin{tabular}{lcc}
\toprule
 \bfseries Cecha		&\bfseries drużyna żółta &\bfseries drużyna niebieska	\\
\midrule
 podział na role 		& \no 		& \yes  			\\
 równomierne rozmieszczenie 	& \no		& \yes 			\\
 krycie przeciwnika 		& \no		& \yes			\\
\bottomrule
\end{tabular}
\end{center}

\noindent
Wyniki po rozegraniu 50 spotkań:
\vspace{0.2cm}
\begin{center}
\begin{tabular}{ccc}
\toprule
 \bfseries wygrane żółtych	& \bfseries remisy 	& \bfseries wygrane niebieskich \\
\midrule
  0 				& 0 			& 50				\\
\bottomrule
\end{tabular}
\end{center}
\vspace{0.2cm}

\begin{tikzpicture}
\hspace{1cm}
\draw (-0.50,0.50) node[anchor=east]{przechwycenia piłki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,0.00)--(0.00,0.50)--(4.52,0.50)--(4.52,0.00)--(0.00,0.00);
\draw (4.52,0.25) node[anchor=west]{6.48};
\draw[line width=1pt, color = black, fill = myYellow](0.00,0.50)--(0.00,1.00)--(3.48,1.00)--(3.48,0.50)--(0.00,0.50);
\draw (3.48,0.75) node[anchor=west]{5.0};
\draw (-0.50,2.00) node[anchor=east]{celne podania};
\draw[line width=1pt, color = black, fill = myBlue](0.00,1.50)--(0.00,2.00)--(3.24,2.00)--(3.24,1.50)--(0.00,1.50);
\draw (3.24,1.75) node[anchor=west]{10.78};
\draw[line width=1pt, color = black, fill = myYellow](0.00,2.00)--(0.00,2.50)--(4.76,2.50)--(4.76,2.00)--(0.00,2.00);
\draw (4.76,2.25) node[anchor=west]{15.84};
\draw (-0.50,3.50) node[anchor=east]{strzały};
\draw[line width=1pt, color = black, fill = myBlue](0.00,3.00)--(0.00,3.50)--(5.08,3.50)--(5.08,3.00)--(0.00,3.00);
\draw (5.08,3.25) node[anchor=west]{11.86};
\draw[line width=1pt, color = black, fill = myYellow](0.00,3.50)--(0.00,4.00)--(2.92,4.00)--(2.92,3.50)--(0.00,3.50);
\draw (2.92,3.75) node[anchor=west]{6.82};
\draw (-0.50,5.00) node[anchor=east]{zdobyte bramki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,4.50)--(0.00,5.00)--(6.83,5.00)--(6.83,4.50)--(0.00,4.50);
\draw (6.83,4.75) node[anchor=west]{4.34};
\draw[line width=1pt, color = black, fill = myYellow](0.00,5.00)--(0.00,5.50)--(1.17,5.50)--(1.17,5.00)--(0.00,5.00);
\draw (1.17,5.25) node[anchor=west]{0.74};
\end{tikzpicture}

	\begin{figure}[!b]
	\centering
	\includegraphics[width=0.78\textwidth]{./hist/eksp_2}
	\caption{Histogram różnicy bramek (eksperyment nr 2) \label{fig:hist_2}}
	\end{figure}

\subsection*{Komentarz}

Zgodnie z przewidywaniami, drużyna niebieska okazała się mieć wyraźną przewagę (czego dowodzi histogram \ref{fig:hist_2}). Tłumaczy to zdecydowanie większe wartości średnie ilości strzelonych bramek, strzałów oraz przechwyceń piłki. Potwierdza także zasadność stosowania modyfikacji, jednak nie określa, które z nich mają kluczowe znaczenie dla wyniku spotkania. Wytłumaczenia wymaga natomiast zdecydowanie niższa wartość celnych podań wykonanych przez graczy drużyny niebieskiej. Analiza nagrań zarejestrowanych podczas eksperymentu ukazuje, że zawodnicy drużyny żółtej dużo częściej zmuszeni byli do podawania do bramkarza dlatego, że wszystkie roboty grające w polu były kryte przez graczy drużyny niebieskiej. Powodowało to zwiększanie średniej ilości podań, jednak nie przynosiło zysku w postaci strzelonych bramek.

\subsection*{Eksperyment nr 3}

Celem kolejnego eksperymentu było sprawdzenie wpływu aktywacji pojedynczych modyfikacji na wynik meczu z drużyną robotów niebieskich posługujących się ich pełnym zestawem. Rezultaty zamieszczono poniżej.

\subsubsection*{Wariant A}

\begin{center}
\begin{tabular}{lcc}
\toprule
 \bfseries Cecha		&\bfseries drużyna żółta &\bfseries drużyna niebieska	\\
\midrule
 podział na role 		& \yes 		& \yes  			\\
 równomierne rozmieszczenie 	& \no		& \yes 			\\
 krycie przeciwnika 		& \no		& \yes			\\
\bottomrule
\end{tabular}
\end{center}

\noindent
Rezultaty rozegrania 50 spotkań:
\vspace{0.2cm}
\begin{center}
\begin{tabular}{ccc}
\toprule
 \bfseries wygrane żółtych	& \bfseries remisy 	& \bfseries wygrane niebieskich \\
\midrule
 1 				& 2 			& 47				\\
\bottomrule
\end{tabular}
\end{center}
\vspace{0.2cm}

\begin{tikzpicture}
\hspace{1cm}
\draw (-0.50,0.50) node[anchor=east]{przechwycenia piłki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,0.00)--(0.00,0.50)--(4.56,0.50)--(4.56,0.00)--(0.00,0.00);
\draw (4.56,0.25) node[anchor=west]{7.58};
\draw[line width=1pt, color = black, fill = myYellow](0.00,0.50)--(0.00,1.00)--(3.44,1.00)--(3.44,0.50)--(0.00,0.50);
\draw (3.44,0.75) node[anchor=west]{5.72};
\draw (-0.50,2.00) node[anchor=east]{celne podania};
\draw[line width=1pt, color = black, fill = myBlue](0.00,1.50)--(0.00,2.00)--(3.28,2.00)--(3.28,1.50)--(0.00,1.50);
\draw (3.28,1.75) node[anchor=west]{12.26};
\draw[line width=1pt, color = black, fill = myYellow](0.00,2.00)--(0.00,2.50)--(4.72,2.50)--(4.72,2.00)--(0.00,2.00);
\draw (4.72,2.25) node[anchor=west]{17.62};
\draw (-0.50,3.50) node[anchor=east]{strzały};
\draw[line width=1pt, color = black, fill = myBlue](0.00,3.00)--(0.00,3.50)--(5.31,3.50)--(5.31,3.00)--(0.00,3.00);
\draw (5.31,3.25) node[anchor=west]{15.38};
\draw[line width=1pt, color = black, fill = myYellow](0.00,3.50)--(0.00,4.00)--(2.69,4.00)--(2.69,3.50)--(0.00,3.50);
\draw (2.69,3.75) node[anchor=west]{7.8};
\draw (-0.50,5.00) node[anchor=east]{zdobyte bramki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,4.50)--(0.00,5.00)--(6.48,5.00)--(6.48,4.50)--(0.00,4.50);
\draw (6.48,4.75) node[anchor=west]{4.78};
\draw[line width=1pt, color = black, fill = myYellow](0.00,5.00)--(0.00,5.50)--(1.52,5.50)--(1.52,5.00)--(0.00,5.00);
\draw (1.52,5.25) node[anchor=west]{1.12};
\end{tikzpicture}


\subsubsection*{Wariant B}

\begin{center}
\begin{tabular}{lcc}
\toprule
 \bfseries Cecha		&\bfseries drużyna żółta &\bfseries drużyna niebieska	\\
\midrule
 podział na role 		& \no 		& \yes  			\\
 równomierne rozmieszczenie 	& \yes		& \yes	 			\\
 krycie przeciwnika 		& \no		& \yes				\\
\bottomrule
\end{tabular}
\end{center}

\noindent
Rezultaty rozegrania 50 spotkań:
\vspace{0.2cm}
\begin{center}
\begin{tabular}{ccc}
\toprule
 \bfseries wygrane żółtych	& \bfseries remisy 	& \bfseries wygrane niebieskich \\
\midrule
  1 				& 2 			& 47				\\
\bottomrule
\end{tabular}
\end{center}
\vspace{0.2cm}

\begin{tikzpicture}
\hspace{1cm}
\draw (-0.50,0.50) node[anchor=east]{przechwycenia piłki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,0.00)--(0.00,0.50)--(4.36,0.50)--(4.36,0.00)--(0.00,0.00);
\draw (4.36,0.25) node[anchor=west]{6.6};
\draw[line width=1pt, color = black, fill = myYellow](0.00,0.50)--(0.00,1.00)--(3.64,1.00)--(3.64,0.50)--(0.00,0.50);
\draw (3.64,0.75) node[anchor=west]{5.5};
\draw (-0.50,2.00) node[anchor=east]{celne podania};
\draw[line width=1pt, color = black, fill = myBlue](0.00,1.50)--(0.00,2.00)--(3.53,2.00)--(3.53,1.50)--(0.00,1.50);
\draw (3.53,1.75) node[anchor=west]{11.76};
\draw[line width=1pt, color = black, fill = myYellow](0.00,2.00)--(0.00,2.50)--(4.47,2.50)--(4.47,2.00)--(0.00,2.00);
\draw (4.47,2.25) node[anchor=west]{14.86};
\draw (-0.50,3.50) node[anchor=east]{strzały};
\draw[line width=1pt, color = black, fill = myBlue](0.00,3.00)--(0.00,3.50)--(4.60,3.50)--(4.60,3.00)--(0.00,3.00);
\draw (4.60,3.25) node[anchor=west]{12.46};
\draw[line width=1pt, color = black, fill = myYellow](0.00,3.50)--(0.00,4.00)--(3.40,4.00)--(3.40,3.50)--(0.00,3.50);
\draw (3.40,3.75) node[anchor=west]{9.2};
\draw (-0.50,5.00) node[anchor=east]{zdobyte bramki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,4.50)--(0.00,5.00)--(6.25,5.00)--(6.25,4.50)--(0.00,4.50);
\draw (6.25,4.75) node[anchor=west]{4.36};
\draw[line width=1pt, color = black, fill = myYellow](0.00,5.00)--(0.00,5.50)--(1.75,5.50)--(1.75,5.00)--(0.00,5.00);
\draw (1.75,5.25) node[anchor=west]{1.22};
\end{tikzpicture}

\subsubsection*{Wariant C}

\begin{center}
\begin{tabular}{lcc}
\toprule
 \bfseries Cecha		&\bfseries drużyna żółta &\bfseries drużyna niebieska	\\
\midrule
 podział na role 		& \no 		& \yes  			\\
 równomierne rozmieszczenie 	& \no		& \yes 				\\
 krycie przeciwnika 		& \yes		& \yes				\\
\bottomrule
\end{tabular}
\end{center}


\noindent
Rezultaty rozegrania 50 spotkań:
\vspace{0.2cm}
\begin{center}
\begin{tabular}{ccc}
\toprule
 \bfseries wygrane żółtych	& \bfseries remisy 	& \bfseries wygrane niebieskich \\
\midrule
  20 				& 11 			& 19				\\
\bottomrule
\end{tabular}
\end{center}
\vspace{0.2cm}

\begin{tikzpicture}
\hspace{1cm}
\draw (-0.50,0.50) node[anchor=east]{przechwycenia piłki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,0.00)--(0.00,0.50)--(3.93,0.50)--(3.93,0.00)--(0.00,0.00);
\draw (3.93,0.25) node[anchor=west]{6.5};
\draw[line width=1pt, color = black, fill = myYellow](0.00,0.50)--(0.00,1.00)--(4.07,1.00)--(4.07,0.50)--(0.00,0.50);
\draw (4.07,0.75) node[anchor=west]{6.74};
\draw (-0.50,2.00) node[anchor=east]{celne podania};
\draw[line width=1pt, color = black, fill = myBlue](0.00,1.50)--(0.00,2.00)--(3.87,2.00)--(3.87,1.50)--(0.00,1.50);
\draw (3.87,1.75) node[anchor=west]{15.24};
\draw[line width=1pt, color = black, fill = myYellow](0.00,2.00)--(0.00,2.50)--(4.13,2.50)--(4.13,2.00)--(0.00,2.00);
\draw (4.13,2.25) node[anchor=west]{16.3};
\draw (-0.50,3.50) node[anchor=east]{strzały};
\draw[line width=1pt, color = black, fill = myBlue](0.00,3.00)--(0.00,3.50)--(4.21,3.50)--(4.21,3.00)--(0.00,3.00);
\draw (4.21,3.25) node[anchor=west]{8.16};
\draw[line width=1pt, color = black, fill = myYellow](0.00,3.50)--(0.00,4.00)--(3.79,4.00)--(3.79,3.50)--(0.00,3.50);
\draw (3.79,3.75) node[anchor=west]{7.34};
\draw (-0.50,5.00) node[anchor=east]{zdobyte bramki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,4.50)--(0.00,5.00)--(3.90,5.00)--(3.90,4.50)--(0.00,4.50);
\draw (3.90,4.75) node[anchor=west]{1.6};
\draw[line width=1pt, color = black, fill = myYellow](0.00,5.00)--(0.00,5.50)--(4.10,5.50)--(4.10,5.00)--(0.00,5.00);
\draw (4.10,5.25) node[anchor=west]{1.68};
\end{tikzpicture}

\subsection*{Komentarz}

	\begin{figure}[!b]
	\centering
	\includegraphics[width=0.75\textwidth]{./hist/eksp_3_wariant_C}
	\caption{Histogram różnicy bramek (eksperyment nr 3, wariant C)\label{fig:hist_3_C}}
	\end{figure}

Rezultaty eksperymentu pokazują, że kluczową modyfikacją jest zdolność do krycia przeciwnika w sytuacjach defensywnych. Podział na role oraz równomierne rozmieszczenie robotów poprawia rezultaty meczów w nieznacznym stopniu. Jednak należy zauważyć, że równomierne rozmieszczenie robotów zwiększa ilość oddanych strzałów. Natomiast zastosowanie krycia powoduje, że ostateczny bilans wygranych wygląda bardzo podobnie do sytuacji przedstawionej w eksperymencie nr~1 (wariant~B dla wszystkich modyfikacji włączonych). Również histogram różnicy bramek, przedstawiony na rysunku~\ref{fig:hist_3_C}, świadczy o tym, że większość spotkań zakończyła się albo remisem, albo nieznaczną przewagą bramkową jednej z drużyn.

Fakt, że drużyna żółta podczas eksperymentu nr~3 posługiwała się zawodnikami korzystającymi z pojedynczych modyfikacji, pozwolił na sprawdzenie poprawności działania każdej z nich. Dlatego oprócz przedstawionych powyżej statystyk, aplikacja \appName{autonomic\_client} gromadziła w trakcie gry informacje o położeniach poszczególnych robotów w czasie meczu. 
Dzięki temu możliwe było ocenienie funkcjonowania obszarów aktywności oraz podziału na role.

	\begin{figure}[!b]
	\centering
	\includegraphics[width=0.8\textwidth]{./hist/eksp_3_wariant_A_napastnik}
	\caption{Rozkład pozycji napastnika drużyny żółtej (wariant A)\label{fig:hist_3_A_napastnik}}
	\end{figure}

	\begin{figure}[!b]
	\centering
	\includegraphics[width=0.8\textwidth]{./hist/eksp_3_wariant_A_obronca}
	\caption{Rozkład pozycji obrońcy drużyny żółtej (wariant A) \label{fig:hist_3_A_obronca}}
	\end{figure}

Na rysunkach \ref{fig:hist_3_A_napastnik} oraz \ref{fig:hist_3_A_obronca} przedstawiono histogram pozycji zajmowanej przez robota drużyny żółtej podczas wszystkich meczów eksperymentu nr 3 w wariancie A - z włączonym podziałem na role. Należy dodać, że bramka drużyny żółtej znajdowała się w punkcie $(2.7,0.675)$, natomiast drużyny niebieskiej w $(2.7,6.725)$. Pierwszy z rysunków przedstawia rozkład wartości pozycji napastnika. W przypadku współrzędnej $y$ maksimum histogramu przesunięte jest w stronę bramki przeciwnika, co potwierdza poprawne działanie obszaru aktywności dla roli atakującego, który gra na bardziej wysuniętej pozycji. Natomiast w przypadku obrońcy (rys.~\ref{fig:hist_3_A_obronca}) działanie zawodnika skupia się na własnej połowie boiska (bliżej bronionej bramki), co również jest zachowaniem poprawnym. 

	\begin{figure}[!b]
	\centering
	\includegraphics[width=0.8\textwidth]{./hist/eksp_3_wariant_B_1}
	\caption{Rozkład pozycji robota \w{yellow1} drużyny żółtej (wariant B)\label{fig:hist_3_B_1}}
	\end{figure}

	\begin{figure}[!b]
	\centering
	\includegraphics[width=0.8\textwidth]{./hist/eksp_3_wariant_B_2}
	\caption{Rozkład pozycji robota \w{yellow4} drużyny żółtej (wariant B) \label{fig:hist_3_B_2}}
	\end{figure}

W przypadku wariantu B komentowanego eksperymentu włączona została modyfikacja polegająca na równomiernym rozmieszczeniu zawodników na boisku. Wpływ jej działania na rozkład wartości pozycji przykładowych zawodników drużyny żółtej przedstawiono na rysunkach \ref{fig:hist_3_B_1} oraz \ref{fig:hist_3_B_2}. Zawodnik \w{yellow1} rozpoczyna każdy mecz na lewym skrzydle i w przypadku, gdy równomierne rozmieszczenie jest aktywne, jego obszar aktywności będzie ograniczony właśnie do tej pozycji. Potwierdza to rysunek \ref{fig:hist_3_B_1} prezentujący rozkład wartości współrzędnej $x$ pozycji robota, o maksimum przesuniętym w stronę mniejszych wartości. W przypadku robota \w{yellow4} mamy do czynienia z podobną sytuacją - w tym przypadku zawodnik zaczyna grę na prawym skrzydle i taki obszar aktywności zostaje mu przydzielony, czego potwierdzeniem jest otrzymany histogram~\ref{fig:hist_3_B_2}. Okazuje się także, że podczas trwania rozgrywki może dojść do sytuacji, w której roboty zamieniają się pozycjami na boisku. Wynika to ze sposobu działania mechanizmu równomiernego rozmieszczania, który nie wpływa np. na zadania związane z przechwytywaniem piłki. Na skutek tego dwa roboty mogą zmierzać do piłki, a po jej przechwyceniu przez jednego z nich może okazać się, że w trakcie przemieszczania zamieniły się one pozycjami na boisku. Tłumaczy to niezerowe wartości histogramów \ref{fig:hist_3_B_1} oraz \ref{fig:hist_3_B_2} dla współrzędnej x, która nie wynika z~początkowo przydzielonego obszaru aktywności. 

%\newpage

Ostatnia z modyfikacji, której skuteczność wymagała potwierdzenia, to funkcja krycia przeciwnika. Jej włączenie powoduje wykorzystywane przez algorytm dodatkowego zadania \task{Cover}. Można zatem sprawdzić, jakie zadania wykorzystywane są przez algorytm sterowania robotem. Średnie czasy wykonywania poszczególnych zadań przez roboty (dla drużyny żółtej) przedstawiono poniżej\footnote{W przypadku wyłączonej modyfikacji krycia przeciwnika za źródło danych posłużyły wyniki eksperymentu nr 2.}:

\begin{center}
\begin{tabular}{lcc}
\toprule
 \bfseries Nazwa 	&\bfseries średni czas trwania [s] 		&\bfseries średni czas trwania [s]\\
\bfseries zadania	& \bfseries (modyfikacje wyłączone)	& \bfseries (modyfikacje włączone) \\
\midrule
 \task{Stop}		&	8.77	&	8.24\\
\task{Shoot}		&	0.43	&	0.29\\
 \task{ProtectGoal}	&	0.95	&	0.71\\
\task{CaptureBall}	&	5.44	&	4.8\\
\task{WaitForPass}	&	1.21	&	0.46\\
\task{HoldPosition}	&	1.01	&	1.49\\
\task{Cover}		&	0	&	1.59\\
\bottomrule
\end{tabular}
\end{center}

\noindent
Na podstawie powyższych czasów łatwo stwierdzić, że w przypadku braku aktywnej modyfikacji, zadanie \task{Cover} nie jest wykonywane. W przypadku włączenia tej funkcji skuteczność działania zadania obrazuje rysunek~\ref{fig:cover_w_akcji}, będący zrzutem ekranu wykonanym podczas działania symulatora - widać na nim ustawienie robotów drużyny niebieskiej, które uniemożliwiają robotom drużyny żółtej otrzymanie podania od bramkarza.

	\begin{figure}[!h]
	\centering
	\includegraphics[width=0.95\textwidth]{./cover_problem}
	\caption{Skuteczność działania zadania \task{Cover} \label{fig:cover_w_akcji}}
	\end{figure}
\vspace{0.5cm}

\newpage
\subsection*{Eksperyment nr 4}

Powyższy eksperyment udowodnił, że modyfikacja polegająca na kryciu przeciwnika podczas obrony stanowi kluczowy element decydujący o wyniku meczu. Ostatnim testem, jaki należało wykonać, było sprawdzenie, czy kombinacje dwóch z trzech modyfikacji są w stanie w widoczny sposób poprawić skuteczność drużyny.

\subsubsection*{Wariant A}

\begin{center}
\begin{tabular}{lcc}
\toprule
 \bfseries Cecha		&\bfseries drużyna żółta &\bfseries drużyna niebieska	\\
\midrule
 podział na role 		& \yes 		& \yes 			\\
 równomierne rozmieszczenie 	& \yes		& \yes 			\\
 krycie przeciwnika 		& \no		& \yes			\\
\bottomrule
\end{tabular}
\end{center}

%\newpage
\noindent
Rezultaty rozegrania 50 spotkań:
\vspace{0.2cm}
\begin{center}
\begin{tabular}{ccc}
\toprule
 \bfseries wygrane żółtych	& \bfseries remisy 	& \bfseries wygrane niebieskich \\
\midrule
  1 				& 0 			& 49				\\
\bottomrule
\end{tabular}
\end{center}
\vspace{0.2cm}

\begin{tikzpicture}
\hspace{1cm}
\draw (-0.50,0.50) node[anchor=east]{przechwycenia piłki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,0.00)--(0.00,0.50)--(4.94,0.50)--(4.94,0.00)--(0.00,0.00);
\draw (4.94,0.25) node[anchor=west]{8.38};
\draw[line width=1pt, color = black, fill = myYellow](0.00,0.50)--(0.00,1.00)--(3.06,1.00)--(3.06,0.50)--(0.00,0.50);
\draw (3.06,0.75) node[anchor=west]{5.18};
\draw (-0.50,2.00) node[anchor=east]{celne podania};
\draw[line width=1pt, color = black, fill = myBlue](0.00,1.50)--(0.00,2.00)--(2.81,2.00)--(2.81,1.50)--(0.00,1.50);
\draw (2.81,1.75) node[anchor=west]{9.44};
\draw[line width=1pt, color = black, fill = myYellow](0.00,2.00)--(0.00,2.50)--(5.19,2.50)--(5.19,2.00)--(0.00,2.00);
\draw (5.19,2.25) node[anchor=west]{17.4};
\draw (-0.50,3.50) node[anchor=east]{strzały};
\draw[line width=1pt, color = black, fill = myBlue](0.00,3.00)--(0.00,3.50)--(5.23,3.50)--(5.23,3.00)--(0.00,3.00);
\draw (5.23,3.25) node[anchor=west]{16.5};
\draw[line width=1pt, color = black, fill = myYellow](0.00,3.50)--(0.00,4.00)--(2.77,4.00)--(2.77,3.50)--(0.00,3.50);
\draw (2.77,3.75) node[anchor=west]{8.72};
\draw (-0.50,5.00) node[anchor=east]{zdobyte bramki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,4.50)--(0.00,5.00)--(5.94,5.00)--(5.94,4.50)--(0.00,4.50);
\draw (5.94,4.75) node[anchor=west]{5.06};
\draw[line width=1pt, color = black, fill = myYellow](0.00,5.00)--(0.00,5.50)--(2.06,5.50)--(2.06,5.00)--(0.00,5.00);
\draw (2.06,5.25) node[anchor=west]{1.76};
\end{tikzpicture}


\subsubsection*{Wariant B}

\begin{center}
\begin{tabular}{lcc}
\toprule
 \bfseries Cecha		&\bfseries drużyna żółta &\bfseries drużyna niebieska	\\
\midrule
 podział na role 		& \yes 		& \yes 			\\
 równomierne rozmieszczenie 	& \no		& \yes 			\\
 krycie przeciwnika 		& \yes		& \yes			\\
\bottomrule
\end{tabular}
\end{center}


\noindent
Rezultaty rozegrania 50 spotkań:
\vspace{0.2cm}
\begin{center}
\begin{tabular}{ccc}
\toprule
 \bfseries wygrane żółtych	& \bfseries remisy 	& \bfseries wygrane niebieskich \\
\midrule
  12 				& 13 			& 25				\\
\bottomrule
\end{tabular}
\end{center}
\vspace{0.2cm}

\begin{tikzpicture}
\hspace{1cm}
\draw (-0.50,0.50) node[anchor=east]{przechwycenia piłki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,0.00)--(0.00,0.50)--(3.92,0.50)--(3.92,0.00)--(0.00,0.00);
\draw (3.92,0.25) node[anchor=west]{6.14};
\draw[line width=1pt, color = black, fill = myYellow](0.00,0.50)--(0.00,1.00)--(4.08,1.00)--(4.08,0.50)--(0.00,0.50);
\draw (4.08,0.75) node[anchor=west]{6.38};
\draw (-0.50,2.00) node[anchor=east]{celne podania};
\draw[line width=1pt, color = black, fill = myBlue](0.00,1.50)--(0.00,2.00)--(3.77,2.00)--(3.77,1.50)--(0.00,1.50);
\draw (3.77,1.75) node[anchor=west]{15.66};
\draw[line width=1pt, color = black, fill = myYellow](0.00,2.00)--(0.00,2.50)--(4.23,2.50)--(4.23,2.00)--(0.00,2.00);
\draw (4.23,2.25) node[anchor=west]{17.56};
\draw (-0.50,3.50) node[anchor=east]{strzały};
\draw[line width=1pt, color = black, fill = myBlue](0.00,3.00)--(0.00,3.50)--(3.83,3.50)--(3.83,3.00)--(0.00,3.00);
\draw (3.83,3.25) node[anchor=west]{6.92};
\draw[line width=1pt, color = black, fill = myYellow](0.00,3.50)--(0.00,4.00)--(4.17,4.00)--(4.17,3.50)--(0.00,3.50);
\draw (4.17,3.75) node[anchor=west]{7.54};
\draw (-0.50,5.00) node[anchor=east]{zdobyte bramki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,4.50)--(0.00,5.00)--(4.62,5.00)--(4.62,4.50)--(0.00,4.50);
\draw (4.62,4.75) node[anchor=west]{1.64};
\draw[line width=1pt, color = black, fill = myYellow](0.00,5.00)--(0.00,5.50)--(3.38,5.50)--(3.38,5.00)--(0.00,5.00);
\draw (3.38,5.25) node[anchor=west]{1.2};
\end{tikzpicture}


\subsubsection*{Wariant C}

\begin{center}
\begin{tabular}{lcc}
\toprule
 \bfseries Cecha		&\bfseries drużyna żółta &\bfseries drużyna niebieska	\\
\midrule
 podział na role 		& \no 		& \yes 			\\
 równomierne rozmieszczenie 	& \yes		& \yes 			\\
 krycie przeciwnika 		& \yes		& \yes			\\
\bottomrule
\end{tabular}
\end{center}


\noindent
Rezultaty rozegrania 50 spotkań:
\vspace{0.2cm}
\begin{center}
\begin{tabular}{ccc}
\toprule
 \bfseries wygrane żółtych	& \bfseries remisy 	& \bfseries wygrane niebieskich \\
\midrule
  15 				& 16 			& 19				\\
\bottomrule
\end{tabular}
\end{center}
\vspace{0.2cm}

\begin{tikzpicture}
\hspace{1cm}
\draw (-0.50,0.50) node[anchor=east]{przechwycenia piłki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,0.00)--(0.00,0.50)--(3.86,0.50)--(3.86,0.00)--(0.00,0.00);
\draw (3.86,0.25) node[anchor=west]{6.2};
\draw[line width=1pt, color = black, fill = myYellow](0.00,0.50)--(0.00,1.00)--(4.14,1.00)--(4.14,0.50)--(0.00,0.50);
\draw (4.14,0.75) node[anchor=west]{6.64};
\draw (-0.50,2.00) node[anchor=east]{celne podania};
\draw[line width=1pt, color = black, fill = myBlue](0.00,1.50)--(0.00,2.00)--(4.30,2.00)--(4.30,1.50)--(0.00,1.50);
\draw (4.30,1.75) node[anchor=west]{15.92};
\draw[line width=1pt, color = black, fill = myYellow](0.00,2.00)--(0.00,2.50)--(3.70,2.50)--(3.70,2.00)--(0.00,2.00);
\draw (3.70,2.25) node[anchor=west]{13.72};
\draw (-0.50,3.50) node[anchor=east]{strzały};
\draw[line width=1pt, color = black, fill = myBlue](0.00,3.00)--(0.00,3.50)--(4.48,3.50)--(4.48,3.00)--(0.00,3.00);
\draw (4.48,3.25) node[anchor=west]{8.28};
\draw[line width=1pt, color = black, fill = myYellow](0.00,3.50)--(0.00,4.00)--(3.52,4.00)--(3.52,3.50)--(0.00,3.50);
\draw (3.52,3.75) node[anchor=west]{6.5};
\draw (-0.50,5.00) node[anchor=east]{zdobyte bramki};
\draw[line width=1pt, color = black, fill = myBlue](0.00,4.50)--(0.00,5.00)--(4.53,5.00)--(4.53,4.50)--(0.00,4.50);
\draw (4.53,4.75) node[anchor=west]{1.7};
\draw[line width=1pt, color = black, fill = myYellow](0.00,5.00)--(0.00,5.50)--(3.47,5.50)--(3.47,5.00)--(0.00,5.00);
\draw (3.47,5.25) node[anchor=west]{1.3};
\end{tikzpicture}

\subsection*{Komentarz}

Połączenie modyfikacji podziału na role oraz równomiernego rozmieszczania zawodników nie przynosi spodziewanej poprawy wyniku. Dopiero kombinacja z funkcją krycia przeciwnika pozwala drużynie skutecznie przeciwstawić się zespołowi niebieskich, jednak wydaje się, że nie jest to tak skuteczna strategia, jak w przypadku użycia jedynie modyfikacji krycia przeciwnika (por. eksperyment~3, wariant~C).

\subsection*{Wnioski końcowe}

Przeprowadzone eksperymenty potwierdzają działanie zaimplementowanego algorytmu sterowania robotem. Zebrane statystyki oraz histogramy położenia robotów pokazują poprawność działania modyfikacji programu. Kluczową cechą, która wpływa na wynik meczu, jest zdolność robotów do skutecznego utrudniania przeciwnikom oddawania strzałów oraz podawania. Podział na role oraz równomierne rozmieszczenie zawodników wydaje się nie mieć tak istotnego wpływu na wynik meczu - możliwe, że proste algorytmy zastosowane przy ich implementacji wymagają ponownego przemyślenia i zaprojektowania bardziej zaawansowanych rozwiązań. Ponadto na podstawie obserwacji filmów z eksperymentów można zauważyć, że roboty mają problemy z ,,uwolnieniem się'' od kryjącego ich przeciwnika - prawdopodobnie usprawnienie zadania \task{WaitForPass}, które jest za to odpowiedzialne, mogłoby zmniejszyć skuteczność wspomnianej modyfikacji.